<!doctype html>
<html lang="zh-CN">

<head>
    <!-- 原始地址：//webapi.amap.com/ui/1.0/ui/misc/PathSimplifier/examples/expand-path.html -->
    <base href="//webapi.amap.com/ui/1.0/ui/misc/PathSimplifier/examples/" />
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <title>动态延展路径</title>
    <style>
    html,
    body,
    #container {
        width: 100%;
        height: 100%;
        margin: 0px;
    }
    </style>
</head>

<body>
    <div id="container"></div>
    <script type="text/javascript" src='//webapi.amap.com/maps?v=1.4.2&key=您申请的key值'></script>
    <!-- UI组件库 1.0 -->
    <script src="//webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script>
    <script type="text/javascript">
    //创建地图
    var map = new AMap.Map('container', {
        zoom: 4
    });

    AMapUI.load(['ui/misc/PathSimplifier', 'lib/$'], function(PathSimplifier, $) {

        if (!PathSimplifier.supportCanvas) {
            alert('当前环境不支持 Canvas！');
            return;
        }

        var pathSimplifierIns = new PathSimplifier({
            zIndex: 100,
            autoSetFitView: false,
            map: map, //所属的地图实例

            getPath: function(pathData, pathIndex) {

                return pathData.path;
            },
            getHoverTitle: function(pathData, pathIndex, pointIndex) {

                if (pointIndex >= 0) {
                    //point 
                    return pathData.name + '，点：' + pointIndex + '/' + pathData.path.length;
                }

                return pathData.name + '，点数量' + pathData.path.length;
            },
            renderOptions: {

                renderAllPointsIfNumberBelow: 100 //绘制路线节点，如不需要可设置为-1
            }
        });

        window.pathSimplifierIns = pathSimplifierIns;

        var myPath = [
                [116.405289, 39.904987],
                [113.964458, 40.54664],
                [111.47836, 41.135964],
                [108.949297, 41.670904],
                [106.380111, 42.149509],
                [103.774185, 42.56996],
                [101.135432, 42.930601],
                [98.46826, 43.229964],
                [95.777529, 43.466798],
                [93.068486, 43.64009],
                [90.34669, 43.749086],
                [87.61792, 43.793308]
            ],
            endIdx = 0,
            data = [{
                name: '动态路线',
                path: myPath.slice(0, 1)
            }];

        pathSimplifierIns.setData(data);

        //对第一条线路（即索引 0）创建一个巡航器
        var navg1 = pathSimplifierIns.createPathNavigator(0, {
            loop: true, //循环播放
            speed: 1000 //巡航速度，单位千米/小时
        });

        function expandPath() {

            function doExpand() {

                endIdx++;

                if (endIdx >= myPath.length) {
                    return false;
                }

                var cursor = navg1.getCursor().clone(), //保存巡航器的位置
                    status = navg1.getNaviStatus();


                data[0].path = myPath.slice(0, endIdx + 1);
                pathSimplifierIns.setData(data); //延展路径


                //重新建立一个巡航器
                navg1 = pathSimplifierIns.createPathNavigator(0, {
                    //loop: true, //循环播放
                    speed: 600000 //巡航速度，单位千米/小时
                });

                if (status !== 'stop') {
                    navg1.start();
                }

                //恢复巡航器的位置
                if (cursor.idx >= 0) {
                    navg1.moveToPoint(cursor.idx, cursor.tail);
                }

                return true;
            }

            if (doExpand()) {

                setTimeout(expandPath, 1000);
            }
        }

        
        navg1.start();

        expandPath();
    });
    </script>
</body>

</html>